package com.demo.java.OD551_600.OD593;

import java.util.Scanner;
import java.util.*;
import java.util.regex.Pattern;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【数字字符串组合倒序(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146583370
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();  // 读取输入字符串

        // 定义正则表达式，匹配非字母、非数字以及特殊符号
        String reg1 = "[^0-9a-zA-Z\\-]";
        Pattern reg2 = Pattern.compile("-");  // 处理 "-" 符号
        Pattern reg3 = Pattern.compile("(?<=\\w)-(?=\\w)");  // 匹配 - 符号两边有字母的情况

        ArrayList<String> split_strs = new ArrayList<>();  // 用于存储分割后的字符串

        // 使用正则表达式拆分字符串并处理
        Arrays.stream(input_str.split(reg1))  // 先按非字母、数字、"-"拆分
                .filter(s -> !"".equals(s))  // 过滤掉空字符串
                .forEach(c -> {
                    // 如果当前部分没有 "-" 或者 "-" 在两边的部分满足条件
                    if (!reg2.matcher(c).find() || reg3.matcher(c).find()) {
                        split_strs.add(c);  // 直接加入列表
                    } else {
                        // 否则拆分 "-" 处理
                        Arrays.stream(c.split("-"))
                                .filter(s -> !"".equals(s))
                                .forEach(s -> split_strs.add(s));  // 继续拆分并加入列表
                    }
                });

        // 将拆分后的字符串反向拼接
        String result = "";
        for (int i = split_strs.size() - 1; i >= 0; i--) {
            result += split_strs.get(i);  // 反向拼接
            if (i != 0) {
                result += " ";  // 确保各部分之间有空格
            }
        }

        // 输出结果
        System.out.println(result);
    }
}